TSYMB=tableSymbole/
CODE=code/
POINTOTS= $(TSYMB)entree.o $(TSYMB)chaineEntree.o $(TSYMB)chaineChaineEntree.o $(TSYMB)pileChaineEntree.o $(TSYMB)hashTable.o
POINTOCODE= $(CODE)lex.o $(CODE)yacc.o $(CODE)tableGencode.o $(CODE)tableValueText.o $(CODE)genMips.o $(CODE)pileStructure.o $(CODE)variableADeclarer.o $(CODE)pourGestionPile.o $(CODE)optimisationVarTemp.o
POINTO= $(POINTOCODE) $(POINTOTS)
POINTOLIST= optimisationVarTemp.o variableADeclarer.o pourGestionPile.o pileStructure.o genMips.o tableGencode.o tableValueText.o lex.o yacc.o entree.o chaineEntree.o chaineChaineEntree.o pileChaineEntree.o hashTable.o
OPTIONSCOMPIL= -W -Wall -Wshadow

#all : compilateur cleanO
all : compilateur
	@echo "\n"
	@echo "  #####################################################################"
	@echo "  #                                                                   #"
	@echo "  #  utilisation : ./compilateur <fichier source>                     #"
	@echo "  #                                                                   #"
	@echo "  #  Génère un fichier .s du nom de l'identifiant du programme.       #"
	@echo "  #  Ce fichier peut être exécuter avec spim : spim -f <programme>.s  #"
	@echo "  #                                                                   #"
	@echo "  #####################################################################"
	@echo "\n"

compilateur : $(POINTOLIST)
	@gcc -o compilateur  $(POINTO) -lfl $(OPTIONSCOMPIL)
	
optimisationVarTemp.o : $(CODE)optimisationVarTemp.c
	@gcc -c -o $(CODE)optimisationVarTemp.o $(CODE)optimisationVarTemp.c $(OPTIONSCOMPIL)
	
variableADeclarer.o : $(CODE)variableADeclarer.c
	@gcc -c -o $(CODE)variableADeclarer.o $(CODE)variableADeclarer.c $(OPTIONSCOMPIL)
	
pourGestionPile.o : $(CODE)pourGestionPile.c
	@gcc -c -o $(CODE)pourGestionPile.o $(CODE)pourGestionPile.c $(OPTIONSCOMPIL)
	
pileStructure.o : $(CODE)pileStructure.c
	@gcc -c -o $(CODE)pileStructure.o $(CODE)pileStructure.c $(OPTIONSCOMPIL)
	
genMips.o : $(CODE)genMips.c
	@gcc -c -o $(CODE)genMips.o $(CODE)genMips.c $(OPTIONSCOMPIL)
	
tableValueText.o : $(CODE)tableValueText.c
	@gcc -c -o $(CODE)tableValueText.o $(CODE)tableValueText.c $(OPTIONSCOMPIL)
	
tableGencode.o : $(CODE)tableGencode.c
	@gcc -c -o $(CODE)tableGencode.o $(CODE)tableGencode.c $(OPTIONSCOMPIL)
	
hashTable.o : $(TSYMB)hashTable.c
	@gcc -c -o $(TSYMB)hashTable.o $(TSYMB)hashTable.c $(OPTIONSCOMPIL)

pileChaineEntree.o : $(TSYMB)pileChaineEntree.c
	@gcc -c -o $(TSYMB)pileChaineEntree.o $(TSYMB)pileChaineEntree.c $(OPTIONSCOMPIL)

chaineChaineEntree.o : $(TSYMB)chaineChaineEntree.c
	@gcc -c -o $(TSYMB)chaineChaineEntree.o $(TSYMB)chaineChaineEntree.c $(OPTIONSCOMPIL)

chaineEntree.o : $(TSYMB)chaineEntree.c
	@gcc -c -o $(TSYMB)chaineEntree.o $(TSYMB)chaineEntree.c $(OPTIONSCOMPIL)

entree.o : $(TSYMB)entree.c
	@gcc -c -o $(TSYMB)entree.o $(TSYMB)entree.c $(OPTIONSCOMPIL)

lex.o : lex $(CODE)lex.yy.c
	@gcc -c -o $(CODE)lex.o $(CODE)lex.yy.c

yacc.o : $(CODE)y.tab.c
	@gcc -c -o $(CODE)yacc.o $(CODE)y.tab.c
#@mv $(CODE)y.output y.output
	
lex : yacc
	@lex -o $(CODE)lex.yy.c $(CODE)compilateur.l
#@lex --debug --verbose -o $(CODE)lex.yy.c $(CODE)compilateur.l
	
yacc :
	@yacc -d -o $(CODE)y.tab.c $(CODE)compilateur.y 
#@yacc -d --verbose -o $(CODE)y.tab.c $(CODE)compilateur.y 

clean : cleanO cleanExe

cleanO :
	@rm $(CODE)lex.yy.c $(CODE)y.tab.c $(CODE)y.tab.h $(POINTO) 

cleanExe :
	@rm compilateur
